package work.learn.interfaces;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;


/*
常用的 Set 实现类有 HashSet、LinkedHashSet 和 TreeSet：
HashSet：基于 HashMap 实现，内部使用哈希表来存储元素。它通过元素的 hashCode() 来快速定位存储位置，大大提高了查找和添加的效率。但元素的顺序是不确定的，因为是根据哈希值来存储的。
LinkedHashSet：继承自 HashSet，内部维护了一个双向链表来记录元素的插入顺序。这样既保证了元素的唯一性，又能维护插入顺序，代价是比 HashSet 稍微多占用一些内存。
TreeSet：基于红黑树实现，能够对元素进行自然排序（实现 Comparable 接口）或者自定义排序（传入 Comparator）。由于是树结构，插入、删除和查找操作的时间复杂度为 O (log n)，适用于需要对元素排序的场景。
* */
public class SetExample {
    public static void main(String[] args) {
        // 创建
        Set<String> set = new HashSet<>();
        // 添加
        set.add("1");
        set.add("2");
        set.add("3");
        set.add("4");
        // 删除
        set.remove("2");
        // 查询
        String firstItem = Arrays.toString(set.toArray());
        System.out.println("firstItem = " + firstItem);
        // 遍历
        for (String item : set) {
            System.out.println("item = " + item);
        }
    }
}
